import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
import bus from "./components/bus"
import ElementUI from "element-ui";
import "element-ui/lib/theme-chalk/index.css";
//引入iconfont
import "./assets/iconfont/iconfont.css";
//引入qf-sub-menu
import qfSubMenu from "qf-sub-menu";
//引入全局样式
import "./assets/global/global.css";

Vue.prototype.$bus = bus

//路由前置钩子
router.beforeEach((to, from, next) => {
  let token = localStorage.getItem("stu-login-token"); //获取token
  if (token) {
    if (store.state.MenuList.length == 0) {
      //如果state中的MenuList长度为0 说明没有 需要重新获取
      //如果没有,那么开始获取
      store.dispatch("FETCH_MENULIST").then(() => {
        next({ path: to.path }); //这里要注意, next里面要传参数即要进入的页面的路由信息，因为next传参数后，当前要进入的路由会被废止，转而进入参数对应的路由，虽然是同一个路由，这么做主要是为了确保addRoutes生效了。
      });
    } else {
      next();
    }
  } else {
    //没有token
    if (to.path == "/login") {
      //如果访问的是登陆，注册，验证码，放行
      next();
    } else {
      next({ path: "/login" }); //否则强制跳转到登陆页面
    }
  }
});
//路由后置钩子
router.afterEach((to, from) => {
  //to是router一个对象，记录了详细路由路径
  // console.log(to)
  let crumlist = to.matched.slice(1);
  // console.log(crumlist)  crumlist是一个对象数组
  //发送给mutation
  store.commit("SET_CRUMLIST", crumlist);
});
Vue.use(ElementUI);
Vue.use(qfSubMenu);

Vue.config.productionTip = false;

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount("#app");

// 测试空间
